//package com.yunxin.customui.config;
//
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.lang.Assert;
//import cn.hutool.core.util.ObjectUtil;
//import com.yunxin.customui.bean.condition.*;
//import com.yunxin.customui.mapper.ui.IVSelectMapper;
//import com.yunxin.customui.util.ConditionUtil;
//import com.yunxin.tools.commonbean.exceptions.GeneralException;
//import com.yunxin.tools.commonbean.exceptions.MyExceptionSupplier;
//import lombok.AllArgsConstructor;
//import lombok.NoArgsConstructor;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.core.annotation.Order;
//import org.springframework.stereotype.Component;
//
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * 初始化的时候加载所有的组件
// */
//@Component
//@Order
//@AllArgsConstructor
//@NoArgsConstructor
//public class FrontCustomConfig {
//
//    @Autowired
//    IVSelectMapper ivSelectMapper;
//
//    final String[] uiModuleId = {"1","2","3","4"};
//
//    Map<String , UIModule> moduleMap = new HashMap<>();
//
//    public Map<String, UIModule> getModuleMap() {
//        //commonCascader();
//        return moduleMap;
//    }
//
//    /**
//     * 不带时分秒单查询
//     */
//    @Bean
//    DatePicker simpleDatePicker(){
//        DatePicker datePickerBean = new DatePicker((customFormValueBean, cascaderBean) -> {
//            customFormValueBean.setBeginTime(cascaderBean.getBeginTime());
//            customFormValueBean.setEndTime(cascaderBean.getEndTime());
//            return customFormValueBean;
//        });
//        datePickerBean.setModulelabel("日期");
//        datePickerBean.setBeginTime(DateUtil.today());
//        moduleMap.put( "simpleDatePicker",datePickerBean);
//        return datePickerBean;
//    }
//
//    /**
//     * 不带时分秒,显示一段时间
//     */
//    @Bean
//    DatePicker rangeDatePicker(){
//        DatePicker datePickerBean = new DatePicker((customFormValueBean, cascaderBean) -> {
//            customFormValueBean.setBeginTime(DateUtil.yesterday().toDateStr());
//            customFormValueBean.setEndTime(DateUtil.today());
//            return customFormValueBean;
//        });
//        datePickerBean.setModulelabel("日期范围");
//        datePickerBean.setBeginTime(DateUtil.yesterday().toDateStr());
//        datePickerBean.setEndTime(DateUtil.today());
//        datePickerBean.setIsrange(true);
//        moduleMap.put( "rangeDatePicker",datePickerBean);
//        return datePickerBean;
//    }
//
//    /**
//     * 带时分秒，单查询
//     */
//    @Bean
//    DateTimePicker simpleDateTimePicker(){
//        DateTimePicker datePickerBean = new DateTimePicker((customFormValueBean, cascaderBean) -> {
//            customFormValueBean.setBeginTime(cascaderBean.getBeginTime());
//            customFormValueBean.setEndTime(cascaderBean.getEndTime());
//            return customFormValueBean;
//        });
//        datePickerBean.setModulelabel("时间");
//        datePickerBean.setBeginTime(DateUtil.formatDateTime(new Date()));
//        datePickerBean.setIsHms(true);
//        moduleMap.put( "simpleDateTimePicker",datePickerBean);
//        return datePickerBean;
//    }
//
//    /**
//     * 带时分秒，单查询
//     */
//    @Bean
//    DateTimePicker simpleDateTimePicker2(){
//        DateTimePicker datePickerBean = new DateTimePicker((customFormValueBean, cascaderBean) -> {
//            customFormValueBean.setBeginTime(cascaderBean.getBeginTime());
//            customFormValueBean.setEndTime(cascaderBean.getEndTime());
//            return customFormValueBean;
//        });
//        datePickerBean.setModulelabel("时间");
//        datePickerBean.setBeginTime(DateUtil.formatDateTime(new Date()));
//        datePickerBean.setIsHms(true);
//        moduleMap.put( "simpleDateTimePicker2",datePickerBean);
//        return datePickerBean;
//    }
//    /**
//     * 带时分秒的一段时间查询
//     * @return
//     */
//    @Bean
//    DateTimePicker rangeDateTimePicker(){
//        DateTimePicker datePickerBean = new DateTimePicker((customFormValueBean, cascaderBean) -> {
//            customFormValueBean.setBeginTime(cascaderBean.getBeginTime());
//            customFormValueBean.setEndTime(cascaderBean.getEndTime());
//            return customFormValueBean;
//        });
//        datePickerBean.setModulelabel("时间范围");
//        datePickerBean.setBeginTime(DateUtil.formatDateTime(new Date()));
//        datePickerBean.setEndTime(DateUtil.tomorrow().toString());
//        datePickerBean.setIsHms(true);
//        datePickerBean.setIsrange(true);
//        moduleMap.put( "rangeDateTimePicker",datePickerBean);
//        return datePickerBean;
//    }
//
//    /**
//     * 带时分秒的一段时间查询
//     * @return
//     */
//    @Bean
//    DateTimePicker rangeMonthPicker(){
//        DateTimePicker datePickerBean = new DateTimePicker((customFormValueBean, cascaderBean) -> {
//            customFormValueBean.setBeginTime(cascaderBean.getBeginTime());
//            customFormValueBean.setEndTime(cascaderBean.getEndTime());
//            return customFormValueBean;
//        });
//        datePickerBean.setModulelabel("日期范围");
//        datePickerBean.setBeginTime(DateUtil.format(new Date(),"yyyy-MM"));
//        datePickerBean.setEndTime(DateUtil.format(DateUtil.tomorrow(),"yyyy-MM"));
//        datePickerBean.setIsrange(true);
//        moduleMap.put( "rangeMonthPicker",datePickerBean);
//        return datePickerBean;
//    }
//
//    /**
//     * 级联组件1号，通用下拉框
//     * 有联动功能 单选
//     */
//    @Bean
//    private void commonCascader(){
//        //将v_select的下拉框按照 groupName分组
//        Map<String, List<SelectBean>> selectByGroupName = ivSelectMapper.getSelectBeans().stream().collect(Collectors.groupingBy(SelectBean::getGroupName));
//
//        //循环v_conditionconfig表，创建下拉框
//        List<ConditionConfig> conditionConfigs = ivSelectMapper.queryConditionConfig();
//        for (ConditionConfig conditionConfig : conditionConfigs) {
//            UIModule root= null;
//            String selectGroupName = conditionConfig.getSelectGroup();
//            List<SelectBean> selectBeans = null;
//            if (ObjectUtil.equals(conditionConfig.getSourceType(),"view")){
//                selectBeans = ivSelectMapper.getSelectBeansBySql(conditionConfig.getSql());
//                if (conditionConfig.getType().equals("cascade")) {
//                    root = ConditionUtil.adapterSelect(selectBeans);
//                }else if (conditionConfig.getType().equals("select")){
//                    root = ConditionUtil.adapterNotCascade(selectBeans);
//                }else {
//                    break;
//                }
//                Assert.notNull(selectBeans, new MyExceptionSupplier<>(new GeneralException("下拉框GROUP:" + selectGroupName + "查询视图时出错")));
//            }else if (ObjectUtil.equals(conditionConfig.getSourceType(),"default")){
//                selectBeans = selectByGroupName.get(selectGroupName);
//                if (conditionConfig.getType().equals("cascade")){
//                    root = ConditionUtil.adapterSelect(selectBeans);
//                }else if (conditionConfig.getType().equals("select")){
//                    root = ConditionUtil.adapterNotCascade(selectBeans);
//                }else {
//                    break;
//                }
//                Assert.notNull(selectBeans,new MyExceptionSupplier<>(new GeneralException("下拉框GROUP:"+selectGroupName+"在V_SELECT中未找到")));
//            }
//
//            root.setModulelabel(conditionConfig.getLabel());
//            root.setModuleid(selectGroupName);
//            root.setAttrName(conditionConfig.getAttrName());
//            moduleMap.put( conditionConfig.getSelectDesc(),root);
//        }
//    }
//
//}
